ORM继承一般有三种模式:
- JOINED:父类和子类各自使用自己的表,当取子类时需要同时连接父类表,此为Django的默认模式;
- TABLE_PER_CLASS:子类表中包含父类表中的字段,此模式有字段冗余;
- SINGLE_TABLE:子类和父类共用一张表,表里包含所有的字段;
JOINED
Django默认模式,无需设置;
- 从父类建立子类的方法
# salespropsvalue为父类的对象 itemsalespropvalue = ProductSalesPropValue() itemsalespropvalue.__dict__ = salespropsvalue.__dict__.copy() itemsalespropvalue.product_id = item_id itemsalespropvalue.save()
TABLE_PER_CLASS
将父类Meta的abstract设置为True,即可实现
SINGLE_TABLE
将父类Meta的abstract设置为True,并且将子类的表名指定为与父类一样,即可实现
限制和问题
- 字段不允许覆盖,子类不能与父类有同名属性